<?php

/**
 * \file
 * Interface `SessionManager`.
 */

namespace pilar\SessionManager /* \cond */ ; /* \endcond */
{

/**
 * Interface pour un gestionnaire de session pour fonctionner avec le
 * gestionnaire d'authentification.
 *
 * \since 01/07/2009
 * \author Dirk MARSKI <dirk.marski@gmail.com>
 */
interface SessionManager {


/**
 * Démarre la session.
 *
 * \since 28/06/2009
 */
public function start();


/**
 * Initialise la session au sens de Pilar.
 *
 * \since 01/07/2009
 */
public function init();


/**
 * Vérifie l'utilisateur en session.
 *
 * \return \c TRUE si l'utilisateur existe en session, \c FALSE sinon.
 * \since 05/07/2009
 */
public function checkAuthentication();


/**
 * Ferme la session.
 *
 * \since 28/06/2009
 */
public function close();


/**
 * Destruction de la session.
 *
 * \since 28/06/2009
 */
public function destruct();


/**
 * Ajouter une variable dans la session.
 * Si la clef existe déjà, l'ancienne valeur est écrasée.
 * 
 * \param $key Clef de la variable.
 * \param $var Variable à stocker, il faut qu'elle soit sérialisable.
 * \since 01/07/2009
 */
public function addVar($key, $var);


/**
 * Efface une variable dans la session.
 * 
 * \param $key Clef de la variable.
 * \since 01/07/2009
 */
public function deleteVar($key);


/**
 * Récupère une variable de session.
 * 
 * \param $key Clef de la variable.
 * \return Variable ayant la clef.
 * \since 01/07/2009
 */
public function getVar($key);


public function getAuthenticationManager();


/**
 * !!! FOR DEBUG USE ONLY !!!
 */
public function getSessionVars();


public function getUserId();


} // Interface.

} // Namespace.
